Pearson Edexcel · GCSE · Computer Science

    Course version: 1CP2 · Version from Sept 2020

    Understand the characteristics and purposes of low-level and high-level…

    Full specification wording

    Programming languages: 3.3.1 understand the characteristics and purposes of low-level and high-level programming languages

    Low-level languages sit close to the hardware: machine code is binary instructions executed directly by the CPU, and assembly language uses mnemonics that map almost one-to-one onto machine…

    Checked against the Pearson Edexcel 1CP2 specification (opens in a new tab) on .

    • Point 1 of 2
    • 4 key terms

    Study notes

    From the checked teaching notes for this specification point.

    The idea

    Low-level languages sit close to the hardware: machine code is binary instructions executed directly by the CPU, and assembly language uses mnemonics that map almost one-to-one onto machine instructions, needing an assembler to translate. They give precise control over registers and memory and can be very efficient, but they are hard to read, write and port between processor families. High-level languages such as Python or Java use readable statements, data structures and abstraction, so programs are quicker to develop, easier to maintain and usually portable, though a translator is needed and the code may use more memory. Purposes follow from this: low-level code suits device drivers, embedded firmware and time-critical routines; high-level code suits general application development where programmer productivity and clarity matter most.

    What earns the marks

    • Machine code is binary and executed directly by the processor, so it is the lowest level and needs no translation.
    • Assembly language uses mnemonic codes and is translated by an assembler; it is low-level but more readable than machine code.
    • Low-level languages give direct control of hardware, registers and memory, which supports drivers, firmware and time-critical routines.
    • High-level languages use readable statements and abstractions, making programs faster to write, easier to debug and maintain.
    • High-level code is generally portable across machines but must be translated by a compiler or interpreter before execution.
    • The purpose of a language choice depends on the task: hardware control and efficiency favour low level, productivity and maintainability favour high level.

    Common mistakes and how to put them right

    • Believing assembly language is a high-level language because it uses words.

      Put it right: It is low-level, since each mnemonic corresponds closely to one machine instruction and an assembler translates it.

    • Thinking high-level code runs directly on the CPU.

      Put it right: It must first be translated into machine code by a compiler or interpreter.

    • Assuming low-level always means faster in every case.

      Put it right: Low-level code gives control and can be efficient, but a well-written high-level program may still meet the need, so the choice depends on the task.

    • Confusing portability with translation.

      Put it right: Portability means the same source can be moved to another machine, not that no translation is required.

    Exam tips

    • Learn one clear contrast pair, such as machine code versus Python, and be ready to state a characteristic and a purpose for each.
    • Link each characteristic to a purpose: direct hardware control suits drivers, while readability and maintainability suit large applications.
    • Check the question wording for 'low-level' or 'high-level' before choosing, because distractors often swap the two sets of features.

    Try the lesson

    The start of the Programming languages: 3.3.1 understand the characteristics and purposes of low-level and high-level programming languages lesson, made from checked teaching notes for this specification point.

    Have a go first

    A programmer must write code that loads a value directly into a specific register of a particular processor and sets individual bits in a memory location. Which type of programming language is most suitable for this task?

    Listen

    Low-level languages sit close to the hardware: machine code is binary instructions executed directly by the CPU, and assembly language uses mnemonics that map almost one-to-one onto machine instructions, needing an assembler to translate. They give precise control over registers and memory and can be very efficient, but they are hard to read, write and port between processor families. High-level languages such as Python or Java use readable statements, data structures and abstraction, so programs are quicker to develop, easier to maintain and usually portable, though a translator is needed and the code may use more memory. Purposes follow from this: low-level code suits device drivers, embedded firmware and time-critical routines; high-level code suits general application development where programmer productivity and clarity matter most. A strong answer earns marks for these points. Machine code is binary and executed directly by the processor, so it is the lowest level and needs no translation. Assembly language uses mnemonic codes and is translated by an assembler; it is low-level but more readable than machine code. Low-level languages give direct control of hardware, registers and memory, which supports drivers, firmware and time-critical routines. High-level languages use readable statements and abstractions, making programs faster to write, easier to debug and maintain. Exam tip: Learn one clear contrast pair, such as machine code versus Python, and be ready to state a characteristic and a purpose for each.

    See it

    A top-down flowchart. At the top, a node labelled 'Programming languages' branches into two nodes: 'Low-level languages' and 'High-level languages'. From 'Low-level languages' four nodes hang below: 'Machine code: binary, executed directly by the CPU'; 'Assembly language: mnemonics, translated by an assembler'; 'Direct control of hardware, registers and memory'; and 'Suits drivers, firmware and time-critical routines'. From 'High-level languages' four nodes hang below: 'Readable statements and abstraction'; 'Translated by a compiler or interpreter'; 'Portable, quicker to develop, easier to maintain'; and 'Suits general application development'.
    It classifies programming languages into low-level and high-level, showing the characteristics and purposes of each.

    Key words

    Say what each word means before you turn the card.

    Machine code

    Try answering aloud or in your head before turning the card.

    Assembly language

    Try answering aloud or in your head before turning the card.

    High-level language

    Try answering aloud or in your head before turning the card.

    Portable

    Try answering aloud or in your head before turning the card.

    See every definition
    Machine code
    Binary instructions executed directly by the CPU, forming the lowest level of language and needing no translation.
    Assembly language
    Uses mnemonics that map almost one-to-one onto machine instructions and needs an assembler to translate it.
    High-level language
    Uses readable statements, data structures and abstraction, so programs are quicker to develop, easier to maintain and usually portable, though a translator is needed.
    Portable
    Describes high-level code that can generally be moved across machines, though it must still be translated before execution.

    Label the diagram

    Some boxes have lost their names. Pick the right name for each number.

    The diagram again, with 3 boxes numbered instead of named. A top-down flowchart. At the top, a node labelled 'Programming languages' branches into two nodes: 'Low-level languages' and 'High-level languages'. From 'Low-level languages' four nodes hang below: 'Machine code: binary, executed directly by the CPU'; 'Assembly language: mnemonics, translated by an assembler'; 'Direct control of hardware, registers and memory'; and 'Suits drivers, firmware and time-critical routines'. From 'High-level languages' four nodes hang below: 'Readable statements and abstraction'; 'Translated by a compiler or interpreter'; 'Portable, quicker to develop, easier to maintain'; and 'Suits general application development'.
    • 1Box 1

    • 2Box 2

    • 3Box 3

    0 of 3 labelled

    There is more to this lesson

    The full lesson goes on to check your understanding and help you earn the marks. Create a free account to carry on, with your progress saved.

    Carry on with the full lesson

    A week of Premium from your first lesson · Then the free plan continues · No card, no charge

    Test your understanding of Programming languages: 3.3.1 understand the characteristics and purposes of low-level and high-level programming languages

    Active recall beats re-reading. Take an instant quiz now to test what you’ve learned and lock it into long-term memory.

    Take topic quiz

    A week of Premium from your first lesson · Then the free plan continues · No card, no charge